/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.0.0                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       labelList;
    location    "constant";
    object      cellDecomposition;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


34080
(
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
1
1
1
1
1
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
3
3
3
3
3
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
0
0
0
0
0
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
4
4
4
4
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
)


// ************************************************************************* //
